package com.hc.wdj.core.context.model;

import com.hc.wdj.core.error.CoreError;
import com.hc.wdj.core.exception.HcException;
import org.apache.commons.lang3.StringUtils;

/**
 * @author ryanwdj
 * @since 2024/11/14
 */
public interface HcRequest {

    /**
     * 获取底层被包装的源对象
     * @return /
     */
    Object getSource();

    /**
     * 在请求体中获取一个参数值
     * @param name
     * @return
     */
    String getParam(String name);

    /**
     * 返回当前请求path（不包括上下文名称）
     * @return /
     */
    String getRequestPath();

    /**
     * 在请求头中获取一个值
     * @return /
     */
    String getHeader(String name);

    /**
     * 返回当前请求 path 是否为指定值
     * @param path
     * @return /
     */
    default boolean isPath(String path){
        return getRequestPath().equals(path);
    }

    /**
     * 在[请求体]里获取一个值，必须存在，否则抛出异常
     * @param name
     * @return
     */
    default String getParamNotNull(String name){
        String paramValue = getParam(name);
        if(StringUtils.isEmpty(paramValue)){
            throw new HcException(CoreError.CUSTOMER_ERROR,"缺少参数："+name);
        }
        return paramValue;
    }
}
